#ifndef __WIZ_DATATYPE_GRAPH_HPP__SHANHAOBO_19800429__
#define __WIZ_DATATYPE_GRAPH_HPP__SHANHAOBO_19800429__

#include "./WizDataTypeGraphForwardDeclare.hpp"
#include "../Container/WizDataTypeSet.hpp"

namespace Wiz
{
    namespace DGraph
    {
        class Type
        {
        public:
            Type(){}
            virtual ~Type();
        public:
            ::Wiz::Void::Type Clear();
            ::Wiz::Void::Type InsertNode(::Wiz::DGraph::Node::Ptr);
        public:
            virtual ::Wiz::DGraph::Node::Ptr CreateNode();
            virtual ::Wiz::Void::Type DestroyNode(::Wiz::DGraph::Node::Ptr);
        public:
            ::Wiz::DGraph::Node::Set::Type   m_Nodes;
        };

        ////////////////////////////////////////////////////////////////////
        ///==============================================================///
        /// Is Ring struct
        ::Wiz::Bool::Type IsRingStruct(::Wiz::DGraph::Node::Ptr From, ::Wiz::DGraph::Node::Ptr To);
        ///==============================================================///
        ////////////////////////////////////////////////////////////////////
    } /// end of namespace DGraph

    namespace UGraph
    {
        class Type
        {
        public:
            Type(){}
            virtual ~Type();
        public:
            ::Wiz::Void::Type Clear();
            ::Wiz::Void::Type InsertNode(::Wiz::UGraph::Node::Ptr);
        public:
            virtual ::Wiz::UGraph::Node::Ptr CreateNode();
            virtual ::Wiz::Void::Type DestroyNode(::Wiz::UGraph::Node::Ptr);
        public:
            ::Wiz::UGraph::Node::Set::Type   m_Nodes;
        };
    } /// end of namespace UGraph
} /// end of namespace Wiz

#endif /*__WIZ_DATATYPE_GRAPH_HPP__SHANHAOBO_19800429__*/
